#-*- coding:utf-8 -*- 
'''
Created on 2011-11-2

@author: Botao Wu
'''
import string

allchars = string.maketrans('', '')

def makefilter(keep):
    '''返回一个函数，此返回函数接受一个字符串为参数并返回字符串的一个部分拷贝，
    此拷贝只包含在keep中的字符，注意keep必须是一个普通字符串'''
    #生成一个由所有不在keep中的字符组成的字符串：keep的补集，
    #即所有我们需要删除的字符
    delchars = allchars.translate(allchars, keep)
    
    #生成并返回需要的过滤函数（作为闭包）
    def thefilter(s):
        return s.translate(allchars, delchars)
    
    return thefilter

if __name__ == '__main__':
    just_vowels = makefilter('aeiouy')
    print just_vowels('four score and seven years ago')
    print just_vowels('tiger, tiger burning bright')
    